// 备忘录相关API
import { AuthenticatedRequest } from './authenticatedRequest';
import type { ApiResponse } from '../utils/axiosInstance';

// 备忘录数据类型定义 - 修改为匹配后端返回的格式
export interface Memo {
  id: number;
  userId: number;
  memo: string;
  createTime: string | null; // 修改字段名并支持null值
  updateTime: string | null; // 修改字段名并支持null值
}

/**
 * 备忘录API服务
 */
export class MemoService {
  /**
   * 根据用户ID获取备忘录列表
   * @param userId 用户ID
   * @returns Promise<ApiResponse<Memo[]>> 备忘录列表响应
   */
  public static async getUserMemoByUserId(userId: number): Promise<ApiResponse<Memo[]>> {
    try {
      console.log(`准备获取用户ID为 ${userId} 的备忘录列表`);
      
      // 验证userId参数
      if (typeof userId !== 'number' || isNaN(userId)) {
        throw new Error(`无效的用户ID: ${userId}`);
      }
      
      // 关键点：使用大写开头的UserId参数名，匹配后端API期望的格式
      const response = await AuthenticatedRequest.get<Memo[]>('/memo/getUserMemoByUserId', {
        UserId: userId  // 修复：参数名改为大写开头的UserId
      });
      
      console.log('获取备忘录列表成功:', response);
      return response;
    } catch (error) {
      console.error('获取备忘录列表失败:', error);
      // 增强：传递更详细的错误信息
      throw error;
    }
  }
  
  /**
   * 删除用户的备忘录
   * @param ids 备忘录ID列表，用逗号分隔
   * @returns Promise<ApiResponse<void>> 删除响应
   */
  public static async deleteUserMemo(ids: string): Promise<ApiResponse<void>> {
    try {
      console.log(`准备删除备忘录，ID列表: ${ids}`);
      
      // 验证ids参数
      if (!ids || ids.trim() === '') {
        throw new Error('无效的备忘录ID列表');
      }
      
      // 修改：使用DELETE方法，并且将ids直接拼接到URL路径中
      // 格式: /memo/deleteUserMemo/1,3,4
      const url = `/memo/deleteUserMemo/${ids}`;
      const response = await AuthenticatedRequest.delete<void>(url);
      
      console.log('删除备忘录成功:', response);
      return response;
    } catch (error) {
      console.error('删除备忘录失败:', error);
      throw error;
    }
  }
  
  // 在MemoService类中添加addUserMemo方法
  public static async addUserMemo(userId: number, memoContent: string): Promise<ApiResponse<void>> {
    try {
      console.log(`准备添加备忘录，用户ID: ${userId}`);
      
      // 验证参数
      if (typeof userId !== 'number' || isNaN(userId)) {
        throw new Error(`无效的用户ID: ${userId}`);
      }
      if (!memoContent || memoContent.trim() === '') {
        throw new Error('备忘录内容不能为空');
      }
      
      const response = await AuthenticatedRequest.post<void>(
        `/memo/addUserMemo`, 
        memoContent  // 直接传递字符串作为请求体
      );
      
      console.log('添加备忘录成功:', response);
      return response;
    } catch (error) {
      console.error('添加备忘录失败:', error);
      throw error;
    }
  }
}